//package com.fastCms.business.mall.deal.impl;
//
//import com.fastCms.business.bim.service.ProductService;
//import com.fastCms.business.frame.utils.BeanConvertUtil;
//import com.fastCms.business.mall.deal.ProductDealService;
//import com.fastCms.business.mall.pojo.entity.Product;
//import com.fastCms.business.mall.pojo.vo.AppProductListVO;
//import com.google.common.collect.Lists;
//import com.google.common.collect.Maps;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//import org.springframework.transaction.annotation.Transactional;
//import org.springframework.util.CollectionUtils;
//
//import java.util.Collections;
//import java.util.List;
//import java.util.Map;
//import java.util.stream.Collectors;
//
///**
// * 杭州人参大健康管理有限公司 版权所有 Copyright 2019<br>
// *
// * @Description: <br>
// * @Project: healthPro <br>
// * @CreateDate: Created in 2020年4月11日 上午9:51:44 <br>
// * @Author: < a href="jiahui.zhao@healthpro.vip">jiahui.zhao</ a>
// */
//@Transactional(rollbackFor = Exception.class)
//@Component
//@Slf4j
//public class ProductDealServiceImpl implements ProductDealService {
//
//    @Autowired
//    private ProductService productServiceImpl;
//
//    @Autowired
//    private ProductClassRelationService productClassRelationServiceImpl;
//
//    @Override
//    public List<AppProductListVO> fillProductTags(List<AppProductListVO> products) {
//        if (CollectionUtils.isEmpty(products)) {
//            return products;
//        }
//        // 商品id
//        List<String> productIds = products.stream().map(AppProductListVO::getId).collect(Collectors.toList());
//        // 获取商品标签
//        List<ProductTag> productTags = productTagServiceImpl.findByProductIds(productIds);
//        if (CollectionUtils.isEmpty(productTags)) {
//            return products;
//        }
//        // 转Map
//        Map<String, List<String>> tagMap = Maps.newHashMap();
//        for (ProductTag tag : productTags) {
//            List<String> tags = tagMap.get(tag.getProductId());
//            if (tags == null) {
//                tags = Lists.newArrayList();
//                tagMap.put(tag.getProductId(), tags);
//            }
//            tags.add(tag.getTagName());
//        }
//        // 分配到商品上
//        for (AppProductListVO product : products) {
//            List<String> tags = tagMap.get(product.getId());
//            if (tags == null) {
//                tags = Collections.emptyList();
//            }
//            product.setProductTags(tags);
//        }
//        return products;
//    }
//
//    @Override
//    public Map<String, List<String>> getProductClassIdsMap(List<String> productIds) {
//        if (CollectionUtils.isEmpty(productIds)) {
//            return Collections.emptyMap();
//        }
//        List<ProductClassRelation> relations = productClassRelationServiceImpl.findByProductIds(productIds);
//        if (CollectionUtils.isEmpty(relations)) {
//            return Collections.emptyMap();
//        }
//        Map<String, List<String>> map = Maps.newHashMapWithExpectedSize(productIds.size());
//        for (ProductClassRelation relation : relations) {
//            List<String> classIds = map.get(relation.getProductId());
//            if (classIds == null) {
//                classIds = Lists.newArrayList();
//                map.put(relation.getProductId(), classIds);
//            }
//            classIds.add(relation.getClassId());
//        }
//        return map;
//    }
//
//    @Override
//    public Map<String, String> getProductBrandIdMap(List<String> productIds) {
//        if (CollectionUtils.isEmpty(productIds)) {
//            return Collections.emptyMap();
//        }
//        List<Product> products = productServiceImpl.findByIdList(productIds);
//        if (CollectionUtils.isEmpty(products)) {
//            return Collections.emptyMap();
//        }
//        Map<String, String> productBrandMap = BeanConvertUtil.convertList2Map(products, Product::getId, Product::getBrandId);
//        return productBrandMap;
//    }
//
//}
